package com.coo.util
{
	import flash.events.Event;
	import flash.text.TextField;
	
	public class RollingText
	{
		public static function play( originalText: String, previousText: String, textArea:TextField, sec: int ): void
		{
			//원본글
			var originalText:String;
			//글자의 자열순서
			var charNumberCount:Number = 0;
			//변경된후 변환된글자 ex) example -> korea / outpt :  koample
			var outputText:String;
			// 변경되기 전의 글자
			var previousText:String;
			// 후미카운트
			var tailDeleteCount:Number = previousText.length;
			//글자값
			var charNumber:String = originalText.charAt(charNumberCount);
			//글자의 ASCII값
			var charCode:Number =  charNumber.charCodeAt();
			//시간 클수록텍스트 에니메이션 시간이 길다.
			var sec:Number;
			//시작카운트
			var startNumber:Number = charCode - sec;
			//처음에 글자가 나타나도록
			textArea.text = previousText;
			
			tf.addEventListener( Event.ENTER_FRAME, function(){
				if(charNumberCount <= originalText.length){
					//스타트 넘버랑 체어 코드랑 같이 을때까지
					if(startNumber != charCode){
						startNumber++;
						// 출력텍스트가 있다면 아웃풋을 앞에 붙인다.
						if(outputText){
							//문장에 끝단에 처음글자가 붙어오는것을 방지하는 코드
							if(charNumberCount != originalText.length){
								textArea.text = outputText+String.fromCharCode(startNumber) + previousText.substr(charNumberCount+1,previousText.length);
							}else{
								//글자가 끝단으로가면 아웃풋코드랑 꼬리글만 나오게한다.
								textArea.text = outputText + previousText.substr(charNumberCount+1,previousText.length);
							}
						}else{
							textArea.text = String.fromCharCode(startNumber) + previousText.substr(charNumberCount+1,previousText.length);
						}
					}else{
						// 바뀐글이 출력된다.
						outputText = originalText.substr(0,charNumberCount+1);
						//옆글자로 이동.
						charNumberCount++;
						
						//가속도 처리
						var acceleration = Math.round((sec-1)*(charNumberCount/originalText.length));
						//시작넘버 재정의
						startNumber = charCode - (sec - acceleration);
						
					}
				}else{
					//후미를 한개씩 잘라주는코드
					if(tailDeleteCount > originalText.length-1){
						textArea.text = textArea.text.substr(0, tailDeleteCount);
						tailDeleteCount--;
					}else{
						//엔터프레임 제거
						removeEventListener( Event.ENTER_FRAME );
					}
				}
			} );
			
			}
		}
		
		public static function onEnter( e: Event ): void
		{
			
		}

	}
}